using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using TM.Data.Contracts;
using TM.DataAccessor;
using TM.ExceptionManager;
using TM.Model;

namespace TM.Data
{
    public class EvidentRepository : IEvidentRepository
    {
        private IDataAccessor _dataAccessor;
        private ITMExceptionHandler _exceptionHandler;

        public EvidentRepository(IIoCParams ioCParams)
        {
            _dataAccessor = ioCParams.DataAccessor;
            _exceptionHandler = ioCParams.ExceptionHandler;
#if DEBUG
            _exceptionHandler.Throwable = true;
#endif
        }

        #region Implementation of IRepository<Evident>

        public IQueryable<Evident> GetAll()
        {
            throw new NotImplementedException();
        }

        public DataTable GetAllAsDataTable()
        {
            throw new NotImplementedException();
        }

        public Evident GetById(Guid id)
        {
            throw new NotImplementedException();
        }

        public DataTable GetByIdAsDataTable(Guid id)
        {
            throw new NotImplementedException();
        }

        public IQueryable<Evident> GetList(Func<Evident, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public Evident GetSingle(Func<Evident, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public Evident GetFisrt(Func<Evident, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public bool Insert(Evident entity)
        {
            throw new NotImplementedException();
        }

        public bool Insert(IList<Evident> entities)
        {
            throw new NotImplementedException();
        }

        public bool Update(Evident entity)
        {
            throw new NotImplementedException();
        }

        public bool Update(IList<Evident> entities)
        {
            throw new NotImplementedException();
        }

        public bool Delete(Evident entity)
        {
            throw new NotImplementedException();
        }

        public bool Delete(IList<Evident> entities)
        {
            throw new NotImplementedException();
        }

        public bool Delete(Guid id)
        {
            throw new NotImplementedException();
        }

        public bool Delete(Func<Evident, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public IQueryable<Evident> GetAllOfTask(Guid[] ids)
        {
            return new List<Evident>
                       {
                           new Evident() {ID = new Guid("1D96B7D2-699E-4793-9F6A-8D98FF047BF7"), EvidentName = "evident name view.doc"},
                           new Evident() {ID = new Guid("1CBA0870-57EE-49A9-9256-A7D85D137D8C"), EvidentName = "scope of the project.pdf"}
                       }.AsQueryable();
        }

        #endregion
    }
}